package BiTree;

/**
 * @program: leetcode
 * @description:给你一个二叉树的根节点 root ，树中每个节点都存放有一个 0 到 9 之间的数字。
 * 每条从根节点到叶节点的路径都代表一个数字：
 *
 * 例如，从根节点到叶节点的路径 1 -> 2 -> 3 表示数字 123 。
 * 计算从根节点到叶节点生成的 所有数字之和 。
 *
 * 叶节点 是指没有子节点的节点。
 * @author: lxf
 * @create: 2024-07-16 20:49
 */
public class SumNumbers {
    public static void main(String[] args) {
        TreeNode node7 = new TreeNode(8, null, null);
        TreeNode node6 = new TreeNode(4);
        TreeNode node5 = new TreeNode(1, null, null);
        TreeNode node4 = new TreeNode(5, null, null);
        TreeNode node3 = new TreeNode(1, new TreeNode(0), node7);
        TreeNode node2 = new TreeNode(9, node4, node5);
        TreeNode node1 = new TreeNode(4, node2, new TreeNode(0));
        sumNumbers(node1);
    }
    static int sum = 0;
    public static int sumNumbers(TreeNode root) {
        sumNumbers2(root,0);
        return sum;
    }
    public static void sumNumbers2(TreeNode root,int num) {
        if (root == null){return;}
        if (root.left == null && root.right == null) {sum += num*10+root.val;}
        num = num*10+root.val;
        sumNumbers2(root.left,num);
        sumNumbers2(root.right,num);
    }

}
